====-=======---=-=-=-----====+*%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%
=========================++*#%%%%%%%%%%%@@@@%%%%%%%@@@@%%%%%%%%%%%%%%
+++++++++++++++++++******#####%%%%#####%@@@%%@@@%%%%%%%%%%%%%%%%%%%%%
+++++++***********+****###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*******++****#********#********#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###****************#*****#**####*#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###**********#*******************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***##**#**#####******+****+++++*###*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************==+****##########%%%%%%%%%%%%%%%%%%%%%%%%%%
******######***#**********+**********#########%%%%%%%%%%%%%%%%%%%%%%%
****##**####*#########**#*#**#*************#####%%%%%%###**#%%%%%%%%%
#%%%##%%%%%##%%%%%##%%%###%%#############################**++########
%#########***#####**##########*################%##########****#######
#**##**##*########*****#########################%%%%%%%%%%###########
%%%%#%%%#%%##%%%%%%%%%##%%%%###%%%%%%%%%%%%%#####*##%%%%%%#%%%%#####%
%%%##%###%##%%%%%%%%%%%%%%%%%%%#%%%%%%%%%#######***####%%%##%%%%%%%%%
%%%%##*#%%%%%%%%%%%%%%%%%%%%%%%#####*#%%#%%%%%##*+*%######%#%%%%%%%%%
%%%#*##%%%%%%%%%%%%#%%%%%%%%%%%%%#####%#%#**%###*+%%%%%%%%%%%%%%%%%%%
%##*##%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%##%%%%##%#*+*%%%%%%%%%%%%%%%%%%%
#**######%%%%%%%%%%###%%%%%%%%%%%%%%%%%##***%%%#**#%%%%%%%%%%%%%%%%%%
#*#######%%%%%%%%%%###%%%%%%%%%%%%%%%%%%##***#%#*##*%%%%%%%%%%%%%%%%%
##########%%%%%%%%%####%%%%%%%%%####%%%%%##****#%%####%%%%%%%%%%%###%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%@@@%%%%@##%%%%%%%%%%%%